/* 
 * File:   TP.cpp
 * Author: nicolas
 *
 * Created on 10 de septiembre de 2012, 10:26
 */
#include <cstdlib>
#include <fstream>
#include <dirent.h>
#include <list>
#include <iterator>
#include <string.h>
#include <iostream>

#include "ParserMatrizExtendida_1.h"
#include "Parser_1.h"

using namespace std;
int main(int argc, char** argv){
   string s("as"),a("aws");
    Parser * p = new Parser(a,s);
    
    p->crearParticiones();
         
}

//bool esCaracterDeCorteDePalabra(char nuevaLetra){
//    if(nuevaLetra == ' ' or nuevaLetra == '.' or nuevaLetra == EOF or
//            nuevaLetra == ',' or nuevaLetra == ';' or nuevaLetra == ':')
//        return true;
//    return false;
//}
//
//int aplicar_reglas(char* palabraActual,char nuevaLetra, int estadoAnterior, string palabraAnterior){
//    if (palabraAnterior[0] >= 'A' and palabraAnterior[0] <= 'Z' and estadoAnterior == PALABRA_SIN_DESICION 
//                        and nuevaLetra >= 'A' and nuevaLetra <= 'Z'){
//        //aca iria bien si la siguiente es mayuscula
//        PALABRA_SIGUE_ANTERIOR;
//    }
//    else if(esCaracterDeCorteDePalabra(nuevaLetra)) return PALABRA_COMPLETA;
//    else if (nuevaLetra == ' ' /*and palabraanterior empieza en mayus*/){
//        return PALABRA_SIN_DESICION;
//    }
//    else return PALABRA_INCOMPLETA;
//}
//
//int main(int argc, char** argv){
//    fstream in;
//    unsigned char IS_FILE = 0x8;
//    list<string> l_palabras;
//    string palabra;
//    string palabraAnterior;
//    DIR * dir;
//    struct dirent * infoArch;
//    char letra;
//    char caracterInterpalabra;
//    char* buffer = new char[100];
//    int i = 0;
//    int estadoAnterior = PALABRA_COMPLETA;
//
//    if ((dir = opendir("/home/nicolas/workspace/PROJECT/ARCHIVOS")) != NULL){
//        infoArch = readdir(dir);
//        
//        ParserMatrizExtendida parser;
//                
//        while(infoArch->d_name != NULL) {
//            if(strstr(infoArch->d_name,"~") == NULL 
//                        and strstr(infoArch->d_name,"idx") == NULL){
//                if (infoArch->d_type == IS_FILE){
//                        char path[50] = "/home/nicolas/workspace/PROJECT/ARCHIVOS/";
//                        
//                        strcat(path,infoArch->d_name);
//                        std::cout << "El path largo es: "<< path << std::endl;
//
//                        memset(buffer, 0, 100);
//                        in.open(path);
//
//                        if (in.is_open()) {
//                                while (in.eof() == false ){
//                                    in.get(letra);
//
//                                    int estadoActual = parser.aplicarReglas(letra, i);
//                                    
//                                    if (estadoActual == PALABRA_COMPLETA){
//
//                                         palabra.assign(buffer);
//                                         l_palabras.push_back(palabra);      
//                                         std::cout << " " << palabra  << endl;
//                                         memset(buffer, 0, 100);
//                                         i = 0;
//                                         i = 0;
//                                         estadoActual = PALABRA_INCOMPLETA;
//                                    }
//                                    else if (estadoActual == PALABRA_INCOMPLETA){
//                                        if (estadoAnterior == PALABRA_SIN_DESICION) {
//                                            buffer[i] = caracterInterpalabra;
//                                            i++;
//                                        }
//                                         buffer[i] = letra;
//                                         i++;
//                                         estadoActual = PALABRA_INCOMPLETA;
//                                    }                                     
//                                    else if (estadoActual == PALABRA_SIN_DESICION){
//                                         //buffer[i] = ' ';
//                                         //i++;
//                                        caracterInterpalabra = letra;
//                                        estadoAnterior = PALABRA_SIN_DESICION;
//                                    }                                     
//                                }
//                                in.close();
//                        }
//                        else std::cout << "error al abrir el archivo, path incorrecto" << endl;
//                }
//            }
//            infoArch = readdir(dir);
//            if (infoArch == NULL) break;
//            i = 0;
//        }
//
////tengo las palabras en una lista, la ordeno y creo el indice'
//        closedir(dir);
//
//        list<string>::iterator it;
//        it = (l_palabras.begin());
//        cout << *it;
//        it++;
//        cout << *it;
//        
//	l_palabras.sort();
//	
//        in.open("/home/nicolas/INDEX");
//	
//        for(it = l_palabras.begin() ; it != l_palabras.end() ; it++){
//         		in.write((*it).c_str(), (*it).length());
//	}
//
//    	in.close();
//	getchar();
//}
//}
//        
//
//        
////                                fd = fopen(path, "rb");
//                                
////                                if (fd != NULL){
////                                //int RES_READ = fread((void*)buffer,sizeof(char),1,fd);
////                                    int RES_READ = fscanf(fd, "%s",buffer);
////                                    while (not(feof(fd))){
////                                        if (RES_READ != 0){
////                                                    l_palabras.push_back(buffer);
////                                                    std::cout << buffer<<std::endl;
////                                            }
////                                        else
////                                                std::cout << "no leo nada "<<std::endl;
////
////                                                RES_READ = fscanf(fd, "%s",buffer);
////                                        }
////					}
////                                else cout << "error al abrir el archivo, path incorrecto" << endl;
////			}
////			infoArch = readdir(dir);
////			cout << "fin de archivo" << endl;
////		}
////	//tengo las palabras en una lista, la ordeno y creo el indice'
////	fclose(fd);
////	closedir(dir);
////        
////        list<string>::iterator it ;
////        it = (l_palabras.begin());
////        cout << *it;
////        it++;
////        cout << *it;
////        
////	l_palabras.sort();
////	
////        fd = fopen("/home/nicolas/workspace/PROJECT/ARCHIVOS/index.idx", "wb");
////	
////        for(it = l_palabras.begin() ; it != l_palabras.end() ; it++){
////         		fwrite(&it, sizeof(string),1,fd);
////	}
////
////	}
////	else cout << "el directorio no existe";
////
////	fclose(fd);
////	getchar();
////}
//    
//    